#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main(void)
{	//创建一个级联分类器
	CascadeClassifier classifier("/usr/share/opencv/haarcascades/haarcascade_frontalface_alt2.xml");
	//创建摄像头
	VideoCapture cap;
	cap.open(0);//打开摄像头
	if(!(cap.isOpened()))
	{	//调用Opened()函数判断摄像头是否打开
		cout << "open error" << endl;
	
	
	}
	
	Mat image;//定义一个M型
	Mat gray;

	while(true)
	{
	//循环采集视频
	cap.read(image);//读取一帧图像
	//将3通道的彩色图像转成单通道的灰度图
	cvtColor(image,gray,CV_BGR2GRAY);
	//均衡化处理
	equalizeHist(gray,gray);
	vector<Rect>faces;
	//检测人脸
	classifier.detectMultiScale(gray,faces);
	if(faces.size())//判断是否检测到人脸
	{
		//将检测到的人脸用矩形框框出来
		rectangle(image,faces[0],CV_RGB(255,0,0));
	}
	imshow("gray",gray);
	imshow("Video",image);//显示一帧图像
	if(waitKey(20) != 255)
	{	//当没有按键按下waitKey(20)的返回值为255所以当 ！＝255时说明有按键按下到结束。
		break;

	}
	
	}
	return 0;
}
